﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PGI.EN.Producto;
using PGI.LN.Producto;

namespace PGI.WF
{
    public partial class FrmProductoMantenimiento : Form
    {
        private ProductoEn prodObj = null;

        public FrmProductoMantenimiento()
        {
            InitializeComponent();
        }

        private void FrmProductoMantenimiento_Load(object sender, EventArgs e)
        {
            dgvProducto.DataSource = ProductoLn.SeleccionarProductos();
            dgvProducto.ClearSelection();
            EditarGrillaUsuarios();
        }

        private void EditarGrillaUsuarios()
        {
            dgvProducto.Columns[0].Visible = false;
            dgvProducto.Columns[1].Visible = false;
            dgvProducto.Columns[2].HeaderText = "Codigo";
            dgvProducto.Columns[3].HeaderText = "Categoria";
            dgvProducto.Columns[4].Visible = false;
            dgvProducto.Columns[5].HeaderText = "Marca";
            dgvProducto.Columns[6].HeaderText = "Descripcion";            
            dgvProducto.Columns[7].Visible = false;
            dgvProducto.Columns[8].Visible = false;
            dgvProducto.Columns[9].Visible = false;
            dgvProducto.Columns[10].Visible = false;
        }

        private void FrmProductoMantenimiento_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F2)
            {
                btnNuevoProducto_Click(sender, e);
            }
            if (e.KeyCode == Keys.F3)
            {
                btnVerProducto_Click(sender, e);
            }
            if (e.KeyCode == Keys.F4)
            {
                btnEditarProducto_Click(sender, e);
            }
            if (e.KeyCode == Keys.F5)
            {
                btnEliminarProducto_Click(sender, e);
            }
            if (e.KeyCode == Keys.Escape)
            {
                this.Dispose();
            }
        }

        private void dgvProducto_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            dgvProducto.ClearSelection();
            prodObj = null;
        }

        private void dgvProducto_RowEnter(object sender, DataGridViewCellEventArgs e)
        //private void dgvProducto_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1)
                prodObj = dgvProducto.Rows[e.RowIndex].DataBoundItem as ProductoEn;
        }
        
        private void btnNuevoProducto_Click(object sender, EventArgs e)
        {
            FrmProductoInsertar frmProd = FrmProductoInsertar.Instance();
            frmProd.prodObj = prodObj;
            frmProd.EstadoForm = 1;
            frmProd.ShowDialog();
            frmProd.Activate();

            //dgvProducto.Rows.Clear();
            FrmProductoMantenimiento_Load(sender, e);
        }

        private void btnVerProducto_Click(object sender, EventArgs e)
        {
            if (prodObj != null)
            {
                FrmProductoInsertar frmProd = FrmProductoInsertar.Instance();
                frmProd.prodObj = prodObj;
                frmProd.EstadoForm = 2;
                frmProd.ShowDialog();
                frmProd.Activate();
            }
            else
            {
                MessageBox.Show(this, "Debe seleccionar un elemento de la tabla", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnEditarProducto_Click(object sender, EventArgs e)
        {
            if (prodObj != null)
            {
                FrmProductoInsertar frmProd = FrmProductoInsertar.Instance();
                frmProd.prodObj = prodObj;
                frmProd.EstadoForm = 3;
                frmProd.ShowDialog();
                frmProd.Activate();

                //dgvProducto.Rows.Clear();
                FrmProductoMantenimiento_Load(sender, e);
            }
            else
            {
                MessageBox.Show(this, "Debe seleccionar un elemento de la tabla", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnEliminarProducto_Click(object sender, EventArgs e)
        {
            if (prodObj != null)
            {
                int usuarioID = 1;
                DialogResult dr = MessageBox.Show(this, "¿Desea eliminar el nuevo producto: " + prodObj.Descripcion + "?", "Pregunta:", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    try
                    {
                        int respElim = ProductoLn.EliminarProducto(prodObj.ProductoID, usuarioID);

                        if (respElim > 0)
                            MessageBox.Show(this, "Se eliminó correctamente el producto seleccionado. ", "INFORMACIÓN", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        else
                            MessageBox.Show(this, "Se presentó un problema al eliminar el producto: " + prodObj.Descripcion, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                        //dgvProducto.Rows.Clear();
                        FrmProductoMantenimiento_Load(sender, e);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
            else
            {
                MessageBox.Show(this, "Debe seleccionar un elemento de la tabla", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
       
    }
}
